package com.ifyyf.controller;

import com.ifyyf.pojo.Dept;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;

import java.util.List;

/**
 * @Author if
 * @Description: What is it
 * @Date 2021-08-24 下午 01:03
 */
@RestController
@CrossOrigin
@RequestMapping("/consumer/dept")
public class DeptConsumerController {
    /**
     * 消费者不应该有service
     * 因为分模块部署到不同的服务器上，所以需要接口调用接口
     * RestTemplate,注册到spring中直接调用
     * getForObject(URI url, Class<T> responseType)、
     * url是网络接口地址，responseType是本类中返回值的类型的class
     *
     * postForObject(URI url, @Nullable Object request, Class<T> responseType)
     * url是网络接口地址，request是参数，responseType是本类中返回值的类型的class
     */

    //提供多种便捷访问远程http服务的方法类，简单的restFul服务模板
    @Autowired
    private RestTemplate restTemplate;
    //远程接口主机地址，但是用集群和Ribbon负载均衡后不应该写死请求地址
//    private static String HOST="http://localhost:8001";

    private static String HOST="http://SPRINGCLOUD-PROVIDER-DEPT";

    /**
     * RestFul风格
     * @param deptno
     * @return
     */
    @GetMapping("/get/{deptno}")
    public Dept get(@PathVariable("deptno") Long deptno){
        return restTemplate.getForObject(HOST+"/dept/get/"+deptno,Dept.class);
    }

    /**
     * list返回值就给List.class
     * @return
     */
    @GetMapping("/getAll")
    public List<Dept> getAll(){
        return restTemplate.getForObject(HOST+"/dept/getAll",List.class);
    }
}
